{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(97,)\n"
     ]
    }
   ],
   "source": [
    "data = np.genfromtxt('ex1data1.txt',delimiter=\",\")\n",
    "# 数据是以逗号分隔开的\n",
    "x_data = data[:,0]  # 获取到数据的第一列\n",
    "y_data = data[:,1]  # 获取到数据的第二列\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()\n",
    "print(x_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean squared error: 8.95\n"
     ]
    }
   ],
   "source": [
    "x_data = data[:,0,np.newaxis]\n",
    "y_data = data[:,1,np.newaxis]\n",
    "#print(y_data.shape)\n",
    "#print(x_data.shape)\n",
    "#print(x_data)\n",
    "# 创建并拟合模型，  线性回归， 实例化模型对象\n",
    "model = LinearRegression()\n",
    "# 拟合数据\n",
    "model.fit(x_data,y_data) \n",
    "# The mean squared error， 均方误差\n",
    "print('Mean squared error: %.2f' % mean_squared_error(y_data, model.predict(x_data)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(6,4))\n",
    "ax.plot(x_data, model.predict(x_data), 'r', label='Prediction')\n",
    "ax.scatter(x_data, y_data, label='Traning Data')\n",
    "ax.legend(loc=2)  # 2表示在左上角\n",
    "ax.set_xlabel('Population')\n",
    "ax.set_ylabel('Profit')\n",
    "ax.set_title('Predicted Profit vs. Population Size')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "jupyter",
   "language": "python",
   "name": "jupyter"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
